#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//int sum(int n)
//{
//    if (n <= 0)
//        return 0;
//    else
//        return n + sum(n - 1);
//}
//
//int main()
//{
//    int n;
//    scanf("%d", &n);
//    printf("%d\n", sum(n));
//
//    return 0;
//}

//int Ack(int m, int n)
//{
//    if (m == 0)
//        return n + 1;
//    else if (n == 0 && m > 0)
//        return Ack(m - 1, 1);
//    else if (m > 0 && n > 0)
//        return (Ack(m - 1, Ack(m, n - 1)));
//}
//
//int main()
//{
//    int m, n;
//
//    scanf("%d %d", &m, &n);
//    printf("%d\n", Ack(m, n));
//
//    return 0;
//}

//double calc_pow(double x, int n)
//{
//    if (n == 1)
//        return x;
//    else
//        return x * calc_pow(x, n - 1);
//}
//
//int main()
//{
//    double x;
//    int n;
//
//    scanf("%lf %d", &x, &n);
//    printf("%.0f\n", calc_pow(x, n));
//
//    return 0;
//}


//int f(int n)
//{
//    if (n == 0)
//        return 0;
//    if (n > 2)
//        return f(n - 1) + f(n - 2);
//    else
//        return 1;
//}
//
//int main()
//{
//    int n;
//
//    scanf("%d", &n);
//    printf("%d\n", f(n));
//
//    return 0;
//}

//void printdigits(int n)
//{
//    if (n < 10)
//        printf("%d\n", n);
//    else
//    {
//        printdigits(n / 10);
//        printf("%d\n", n % 10);
//    }
//}
//
//int main()
//{
//    int n;
//    scanf("%d", &n);
//    printdigits(n);
//
//    return 0;
//}
//
//#include <math.h>
//
//int search(int n)
//{
//    int count = 0;
//    int n1, n2, n3;
//    for (int i = 11; i <= sqrt(n); i++)
//    {
//        if (pow(i, 2) < n)
//        {
//            int tmp = pow(i, 2);
//            n1 = tmp % 10;
//            n2 = tmp / 10 % 10;
//            n3 = tmp / 100 % 10;
//            if (n1 == n2 || n2 == n3 || n1 == n3)
//                count++;
//        }
//    }
//    return count;
//}
//
//int main()
//{
//    int number;
//
//    scanf("%d", &number);
//    printf("count=%d\n", search(number));
//
//    return 0;
//}
//#include<math.h>
//double fn(double x, int n)
//{
//    double sum = 0;
//    int flag = 1;
//    for (int i = 1; i <= n; i++)
//    {
//        sum += pow(x, i) * flag;
//        flag = -flag;
//    }
//    return sum;
//}
//
//int main()
//{
//    double x;
//    int n;
//
//    scanf("%lf %d", &x, &n);
//    printf("%.2f\n", fn(x, n));
//
//    return 0;
//}
//
//void dectobin(int n)
//{
//    if (n == 0 || n == 1)
//        printf("%d",n);
//    else
//    {
//        dectobin(n / 2);
//        printf("%d", n % 2);
//    }
//}
//
//int main()
//{
//    int n;
//
//    scanf("%d", &n);
//    dectobin(n);
//
//    return 0;
//}

//struct complex 
//{
//    int real;
//    int imag;
//};
//
//struct complex multiply(struct complex x, struct complex y)
//{
//    struct complex product;
//    product.real = x.real * y.real - x.imag * y.imag;
//    product.imag = x.real * y.imag + x.imag * y.real;
//    return product;
//}
//
//int main()
//{
//    struct complex product, x, y;
//
//    scanf("%d%d%d%d", &x.real, &x.imag, &y.real, &y.imag);
//    product = multiply(x, y);
//    printf("(%d+%di) * (%d+%di) = %d + %di\n",
//        x.real, x.imag, y.real, y.imag, product.real, product.imag);
//
//    return 0;
//}

//#define MAXN 10
//
//struct student 
//{
//    int num;
//    char name[20];
//    int score;
//    char grade;
//};
//
//int set_grade(struct student* p, int n)
//{
//    int count = 0;
//    int i;
//    for (i = 0; i < n; i++)
//    {
//        if ((*p).score < 60)
//        {
//            (*p).score = 'D';
//            count++;
//        }
//        else if ((*p).score >= 60 && (*p).score < 70)
//            (*p).score = 'C';
//        else if ((*p).score >= 70 && (*p).score < 85)
//            (*p).score = 'B';
//        else if ((*p).score >= 85 && (*p).score <= 100)
//            (*p).score = 'A';
//        p++;
//    }
//    return count;
//}
//
//int main()
//{
//    struct student stu[MAXN], * ptr;
//    int n, i, count;
//
//    ptr = stu;
//    scanf("%d\n", &n);
//    for (i = 0; i < n; i++) {
//        scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
//    }
//    count = set_grade(ptr, n);
//    printf("The count for failed (<60): %d\n", count);
//    printf("The grades:\n");
//    for (i = 0; i < n; i++)
//        printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
//    return 0;
//}
//struct stu
//{
//	char name[11];
//	float base;
//	float fl;
//	float out;
//	float end;
//};
//
//int main()
//{
//	int n, i;
//	scanf("%d", &n);
//	struct stu p[1000];
//	for (i = 0; i < n; i++)
//	{
//		scanf("%s %f %f %f", &p[i].name, &p[i].base, &p[i].fl, &p[i].out);
//		p[i].end = p[i].base + p[i].fl - p[i].out;
//	}
//	for (i = 0; i < n; i++)
//	{
//		printf("%s %.2f\n", p[i].name, p[i].end);
//	}
//
//	return 0;
//}
//int main()
//{
//	int hour,min,s;
//	int n;
//	scanf("%d:%d:%d", &hour, &min, &s);
//	getchar();
//	scanf("%d", &n);
//	s += n;
//	if (s >= 60)
//	{
//		if (min == 59)
//		{
//			hour++;
//			min = 0;
//			s -= 60;
//		}
//		else
//		{
//			min++;
//			s -= 60;
//		}
//	}
//	if (hour >= 24)
//		hour -= 24;
//	printf("%02d:%02d:%02d", hour, min, s);
//
//	return 0;
//}
//struct stu
//{
//	char id[6];
//	char name[11];
//	float score;
//};
//
//int main()
//{
//	struct stu p[1000];
//	int n,i,sum = 0;
//	scanf("%d", &n);
//	for (i = 0; i < n; i++)
//	{
//		scanf("%s %s %f", &p[i].id, &p[i].name, &p[i].score);
//		sum += p[i].score;
//	}
//	float average = 1.0 * sum / n;
//	printf("%.2f\n", average);
//	for (i = 0; i < n; i++)
//	{
//		if (p[i].score < average)
//			printf("%s %s\n", p[i].name, p[i].id);
//	}
//
//	return 0;
//}

//struct book_price
//{
//	char name[31];
//	float pr;
//};
//
//int main()
//{
//	struct book_price p[1000];
//	int n, i;
//	char c;
//	int tmp1,tmp2;
//	scanf("%d", &n);
//	for (i = 0; i < n; i++)
//	{
//		scanf("%c", &c);
//		gets(p[i].name);
//		scanf("%f", &p[i].pr);
//	}
//	tmp1 = 0;
//	for (i = 0; i < n; i++)
//	{
//		if (p[i].pr > p[tmp1].pr)
//			tmp1 = i;
//	}
//	tmp2 = 0;
//	for (i = 0; i < n; i++)
//	{
//		if (p[i].pr < p[tmp2].pr)
//			tmp2 = i;
//	}
//	printf("%.2f, %s\n %.2f, %s\n", p[tmp1].pr, p[tmp1].name, p[tmp2].pr, p[tmp2].name);
//
//	return 0;
//}
//struct Book
//{
//	double price;
//	char name[31];
//} book;
//
//int main()
//{
//	int n;
//	char c;
//	scanf("%d", &n);
//	struct Book book[n];
//	int i, max = 0, min = 0;
//	for (i = 0; i < n; i++)
//	{
//		scanf("%c", &c);
//		gets(book[i].name);
//		scanf("%lf", &book[i].price);
//		if (book[i].price > book[max].price)
//		{
//			max = i;
//		}
//		if (book[i].price < book[min].price)
//		{
//			min = i;
//		}
//	}
//	printf("%.2lf, %s\n", book[max].price, book[max].name);
//	printf("%.2lf, %s\n", book[min].price, book[min].name);
//	return 0;
//}struct Book
//{
//	double price;
//	char name[31];
//} book;
//
//int main()
//{
//	int n;
//	char c;
//	scanf("%d", &n);
//	struct Book book[n];
//	int i, max = 0, min = 0;
//	for (i = 0; i < n; i++)
//	{
//		scanf("%c", &c);
//		gets(book[i].name);
//		scanf("%lf", &book[i].price);
//		if (book[i].price > book[max].price)
//		{
//			max = i;
//		}
//		if (book[i].price < book[min].price)
//		{
//			min = i;
//		}
//	}
//	printf("%.2lf, %s\n", book[max].price, book[max].name);
//	printf("%.2lf, %s\n", book[min].price, book[min].name);
//	return 0;
//}

//int main()
//{
//	int a, b, c, d;
//	float n1, n2;
//	scanf("%d/%d %d/%d", &a, &b, &c, &d);
//	n1 = 1.0 * a / b;
//	n2 = 1.0 * c / d;
//	if (n1 > n2)
//		printf("%d/%d > %d/%d", a, b, c, d);
//	else if (n1 < n2)
//		printf("%d/%d < %d/%d", a, b, c, d);
//	else
//		printf("%d/%d = %d/%d", a, b, c, d);
//
//	return 0;
//}

int main()
{
	double x1, y1, x2, y2;
	scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
	double x, y;
	x = x1 + x2;
	y = y1 + y2;

	if (x <= 0 && x >= -0.05) x = 0.0;
	if (y <= 0 && y >= -0.05) y = 0.0;

	printf("(%.1lf, %.1lf)", x, y);

	return 0;
}